Skip to main content

sino.iterable

Utilities for working with iterable values, ranges, and key-value entries.

Import:

import Iter from "sino.iterable"

Iter:values(array)

Wraps each array value as an iterable:

Each entry contains:

  • value
Iter:values(["a", "b", "c"])
-- {"a", "b", "c"}, only really needed to wrap it as a sino object

Iter:value(entry)

Returns the value from an entry.

let item = Iter:values([10])

Iter:value(item)
-- 10

Iter:key(entry)

Returns the key from an entry.

Used with entries created by enumerate, pairs, or keys.

let item = Iter:enumerate(["a"])

Iter:key(item)
-- 1

let item2 = Iter:pairs({a="b"})

Iter:key(item2)
-- a

Iter:enumerate(array)

Creates entries containing index and value.

Each entry contains:

  • key

  • value

Iter:enumerate(["a", "b"])

-- {

-- {key = 1, value = "a"},

-- {key = 2, value = "b"}

-- }

Iter:pairs(object)

Creates entries from key-value pairs in an object.

Each entry contains:

  • key

  • value

Iter:pairs({name = "Chloe", age = 20})
-- key=name, value="Chloe"

Iter:keys(object)

Creates entries containing only keys.

Each entry contains:

  • key
Iter:keys({name = "Chloe", age = 20})

Iter:range(start, finish, step?)

Creates a numeric range.

If step is omitted, 1 is used.

Iter:range(1, 5)
-- {1, 2, 3, 4, 5}

Iter:range(0, 10, 2)
-- {0, 2, 4, 6, 8, 10}

Iter:range(5, 1, -1)
-- {5, 4, 3, 2, 1}

Step cannot be 0.